package club.mzywucai.blog.air_portal.mapper;

import club.mzywucai.blog.air_portal.pojo.po.FileInfoPo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author mzywucai
 * @Description
 * @date 2019/6/2
 */
public interface FileInfoMapper {
    /**
     * @Description 上传文件之后，存入字段信息
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   void
     * @params  []
     */
    void addFile(FileInfoPo fileInfoPo);

    /**
     * @Description 通过code获取id
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   int
     * @params  [fileCode]
     */
    Integer getFileId(@Param("file_code") String fileCode);

    /**
     * @Description 获取文件当前的可下载次数
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   int
     * @params  [fileCode]
     */
    int getFileTimes(@Param("file_code") String fileCode);

    /**
     * @Description 获取文件的密码
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   java.lang.String
     * @params  []
     */
    String getFilePass(@Param("file_code") String fileCode);
    
    /**
     * @Description 获取文件的信息(主要是uri为整体的)
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   club.mzywucai.blog.air_portal.pojo.po.FileInfoPo
     * @params  []
     */
    FileInfoPo getFile(@Param("file_code") String fileCode);

    /**
     * @Description 减去文件的过期次数
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   void
     * @params  [fileCode]
     */
    void subFileTimes(@Param("file_code") String fileCode);

    /**
     * @Description 删除文件，其实是将文件的fileCode字段改成000000.
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   void
     * @params  []
     */
    void delFile(int id);

    /**
     * @Description 留给定时调度任务帮忙删删
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   void
     * @params  []
     */
    void delFiles();

    /**
     * @Description 获取fileCode的集合，方便CodeContainer生产code
     *              但是切记要去重，因为会有很多的000000。
     * @author mzywucai
     * @time 2019-06-02
     * @see 
     * @return   java.util.List<java.lang.String>
     * @params  []
     */
    List<String> getFileCodeList();
}
